n = int(input())
a = [i for i in range(n)]
dp = [[0 for j in range(i + 1)] for i in range(n)]
for i in a:
    a[i] = [*map(int, input().split())]
# 起点是a[0][0]
dp[0][0] = a[0][0]
# 遍历每一层
for i in range(1, n):
    # 如果j是0的话，只可能是从上一层的0走下来的，所以直接dp[i-1][0]+a[i][0]就是这层结果了。
    dp[i][0] = dp[i - 1][0] + a[i][0]
    # 之后j遍历[1,i-1]
    for j in range(1, i):
        # 这个时候，就有两种可能了，可能是左上往右走下来的，也可能是正上往左走下来的。
        # 就要比较得出他们中较大的那个再加a[i][j]。
        dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j]
    # 同样每层的最后一个只可能是上一层最后一个走下来的。
    dp[i][i] = dp[i - 1][i - 1] + a[i][i]
# 输出最后一层中最大的结果，就是最优解。
print(max(dp[n - 1]))
'''
第十一届省赛Python组第H题我看到就想到这题了。
差不太多，就是省赛的题多了一点限制。可以参考我的题解。
https://blog.csdn.net/bdu_zhangAo/article/details/109142845
'''
# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
